#ifndef METHODDECLASSICAL_H
#define METHODDECLASSICAL_H

#include "Method.h"

#if TEST_VARIABLES==1
#include "engine.h"
#endif

class MethodDEClassical: public Method
{

public:
    MethodDEClassical(Method::SubType subType, Problem * problem, unsigned int popSize, unsigned int iterations);
    ~MethodDEClassical();

    OptimizedValue optimize(int caseProblem);

    double getCr()
    {
        return cr;
    }
    void setCr(double val)
    {
        cr=val;
    }

private:
    inline void mutation(const unsigned int & j, unsigned int & k, double & mutCost, double & mutatedValue);
    inline void crossover(const unsigned int & j, unsigned int & k, double & crossoverCost);
    inline void selecton(const unsigned int & j, double & mutCost,double & crossoverCost);

    double cr;
};

#endif // METHODDECLASSICAL_H
